package com.oop.ch08;

import java.util.InputMismatchException;
import java.util.Scanner;

public class Demo1 {
	public static void main(String[] args) {
		try {
			User user=new User();
			user.setAge(1);
			user.setName("张三");
			user.setSex("男");
			
			System.out.println(user);
			
			
		}catch (Exception e){
			System.out.println(e.getMessage());
		}finally {
			System.out.println("程序运行结束");
		}
	}
	
	//getSex这个只能返回 正常 性别，男 女 又或者 异常
	public static String getSex() throws Exception{
		String sex=null;
		
		Scanner input=new Scanner(System.in);
		System.out.print("请输入您的性别：");
		sex=input.next();
		
		if(sex.equals("男") || sex.equals("女")){
			return sex;
		}
		//return "您输入的性别信息不合法";
		
		/*
			throw:手动抛出业务逻辑异常（常用）
			throw强制让代码出错
			throw那这个方法一定要添加throws
		 */
		throw new Exception("您的输入的性别信息不合法！");
	}
	
	/**
	 * throws
	 * 1、放在方法名称的后面
	 * 2、作用是告诉调用我这个方法的地方，我的方法里面有可能有异常，调用方法的地方需要处理
	 * 3、调用本方法的地方有两种方式处理异常：
	 *      a、在调用有throws修饰的方法，加try/catch
	 *      b、在调用有throws修饰的方法，的后面继续添加throws，继续抛出错误
	 */
	public static int demo6() throws Exception{
		Scanner input=new Scanner(System.in);
		System.out.print("请输入被除数：");
		int num1=input.nextInt();
		System.out.print("请输入除数：");
		int num2=input.nextInt();
		int result=num1/num2;
		System.out.println("计算结果="+result);
		return result;
	}
	
	//除法
	public static int demo5(){
		try{
			Scanner input=new Scanner(System.in);
			System.out.print("请输入被除数：");
			int num1=input.nextInt();
			System.out.print("请输入除数：");
			int num2=input.nextInt();
			int result=num1/num2;
			System.out.println("计算结果="+result);
			return result;
		}catch (ArithmeticException e){//捕获除数为零的异常----父类Exception
			//.ArithmeticException: / by zero
			System.out.println("除数不能为零,程序退出");
			return -1;
		}catch (Exception e){
			e.printStackTrace();//打印错误信息(错误的堆栈)
			System.out.println("输入不合法,程序退出");
			return  0;
		}finally {//不管程序是否正常运行，最后总是要执行的代码块//数据库连接的时候必须使用
			System.out.println("感谢使用本程序");
		}
	}
	
	//除法
	public static void demo4(){
		try{
			Scanner input=new Scanner(System.in);
			System.out.print("请输入被除数：");
			int num1=input.nextInt();
			System.out.print("请输入除数：");
			int num2=input.nextInt();
			int result=num1/num2;
			System.out.println("计算结果="+result);
		}catch (ArithmeticException e){//捕获除数为零的异常----父类Exception
			//.ArithmeticException: / by zero
			System.out.println("除数不能为零,程序退出");
		}catch (Exception e){
			e.printStackTrace();//打印错误信息(错误的堆栈)
			System.out.println("输入不合法,程序退出");
		}finally {//不管程序是否正常运行，最后总是要执行的代码块//数据库连接的时候必须使用
			System.out.println("感谢使用本程序");
		}
	}
	
	//有加异常处理的业务
	public static void demo3(){
		try{
			Scanner input=new Scanner(System.in);
			System.out.print("请输入被除数：");
			int num1=input.nextInt();
			System.out.println(num1);
		}catch (Exception e){
			System.out.println("输入不合法,程序退出");
		}
	}
	
	public static void demo22(){
		Scanner input=new Scanner(System.in);
		System.out.print("请输入被除数：");
		int num1=0;
		//try是把所有可能出现错误的代码包裹起来
		try {
			num1=input.nextInt();
		}catch (Exception e){//catch是来处理错误的代码块
			//在catch里面没有写代码，认为把错误吃掉了
			System.out.println("输入不合法,程序退出");
			System.exit(1);//强制中断正在运行的程序，太危险！！！自毁！
			return;
		}
		System.out.println(num1);
	}
	
	//有加异常处理的业务
	public static void demo2(){
		Scanner input=new Scanner(System.in);
		System.out.print("请输入被除数：");
		int num1=0;
		//try是把所有可能出现错误的代码包裹起来
		try {
			num1=input.nextInt();
		}catch (Exception e){//catch是来处理错误的代码块
			//在catch里面没有写代码，认为把错误吃掉了
			System.out.println("输入不合法,程序退出");
			return;
		}
		System.out.println(num1);
	}
	
	//没有加异常处理的业务
	public static void demo1(){
		Scanner input=new Scanner(System.in);
		System.out.print("请输入被除数：");
		int num1=input.nextInt();
		System.out.println(num1);
		System.out.println("感谢使用本程序");
	}
}
